package service

// 接收登录参数的结构体

type LoginPasswordRequest struct {
	UserName string `json:"username"`
	Password string `json:"password"`
}

// 登录成功后返回token的结构体

type LoginPasswordReply struct {
	Token        string `json:"token"`
	RefreshToken string `json:"refresh_token"`
}

// 获取管理员列表参数结构体
type GetUserRequestList struct {
	*QueryRequest
}

// 关键字和分页信息
type QueryRequest struct {
	Page    int    `json:"page" form:"page"`
	Size    int    `json:"size" form:"size"`
	Keyword string `json:"keyword" form:"keyword"`
}

// 返回管理员信息的结构体
type GetUserListReply struct {
	ID        uint   `json:"id"`
	Username  string `json:"username"`
	Avatar    string `json:"avatar"`
	Phone     string `json:"phone"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
}

// 添加管理员表单数据的结构体
type AddUserRequest struct {
	UserName string `json:"username"`
	Password string `json:"password"`
	Phone    string `json:"phone"`
	Remark   string `json:"remark"`
	RoleId   uint   `json:"role_id"`
}

// 请求管理员id
type GetUserDetailRequest struct {
	ID uint `json:"id"`
}

// 返回管理员信息
type GetUserDetailReply struct {
	ID uint `json:"id"`
	AddUserRequest
}

// 更新管理员的信息
type UpdateUserRequest struct {
	ID uint `json:"id"`
	AddUserRequest
}

// 删除管理员信息
type DeleteUserRequest struct {
	ID uint `json:"id"`
}

// 获取角色列表查询参数
type GetRoleListRequest struct {
	*QueryRequest
}

// 返回角色列表参数
type GetRoleListReply struct {
	ID        uint   `json:"id"`
	Name      string `json:"name"`
	Sort      string `json:"sort"`
	IsAdmin   int    `json:"is_admin"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
}

// 添加角色
type AddRoleRequest struct {
	Name    string `json:"name"`
	Sort    int64  `json:"sort"`
	IsAdmin int8   `json:"is_admin"`
	Remark  string `json:"remark"`
	MenuId  []uint `json:"menu_id"`
}

// 返回角色详情
type GetRoleDetailReply struct {
	ID uint `json:"id"`
	AddRoleRequest
}

// 更新角色信息
type UpdateRoleRequest struct {
	ID uint `json:"id"`
	AddRoleRequest
}

// 删除角色
type DeleteRoleRequest struct {
	ID uint `json:"id"`
}

// 修改管理员角色功能
type PatchRoleAdminRequest struct {
	ID      uint `json:"id"`
	IsAdmin int8 `json:"is_admin"`
}

// 返回角色的结构体
type AllRoleListReply struct {
	ID   uint   `json:"id"`
	Name string `json:"name"`
}

// MenuReply 菜单列表数据返回结构体
type MenuReply struct {
	ID            uint         `json:"id"`
	ParentId      uint         `json:"parent_id"`
	Name          string       `json:"name"`
	Icon          string       `json:"web_icon"`
	Sort          int          `json:"sort"`
	Path          string       `json:"path"`
	Level         int          `json:"level"`
	ComponentName string       `json:"component_name"`
	SubMenus      []*MenuReply `json:"sub_menus"`
}

// AllMenu 所有菜单数据结构体
type AllMenu struct {
	ID            uint   `json:"id"`
	ParentId      uint   `json:"parent_id"`
	Name          string `json:"name"`
	Icon          string `json:"web_icon"`
	Sort          int    `json:"sort"`
	Path          string `json:"path"`
	Level         int    `json:"level"`
	ComponentName string `json:"component_name"`
}

// AddMenuRequest 新增菜单结构体
type AddMenuRequest struct {
	ParentId      uint   `json:"parent_id"`      // 父级菜单唯一标志，不填默认为顶级菜单
	Name          string `json:"name"`           // 菜单名称
	Icon          string `json:"web_icon"`       // 网页图标
	Path          string `json:"path"`           // 路径
	Sort          uint   `json:"sort"`           // 排序
	Level         uint   `json:"level"`          // 菜单等级，{0：目录，1：菜单，2：按钮}
	ComponentName string `json:"component_name"` // 组件路径
}

// UpdateMenuRequest 接收更新菜单信息的结构体
type UpdateMenuRequest struct {
	ID uint `json:"id"`
	AddMenuRequest
}

// 根据id删除菜单
type DeleteMenuRequest struct {
	ID uint `json:"id"`
}

// 跟新个人密码
type UpdatePwdRequest struct {
	UsedPassword string `json:"used_password"`
	NewPassword  string `json:"new_password"`
}

// IpInfo IP归属地详情结构体
type IpInfo struct {
	Country  string `json:"country"`
	Region   string `json:"region"`
	Province string `json:"province"`
	City     string `json:"city"`
	Isp      string `json:"isp"`
}
